实例初始化工具介绍

ECS实例创建过程中,默认通过初始化工具自动执行一些预定义的配置任务,例如网络配置、主机名设置以及自定义脚本的执行等。不同类型的操作系统使用的初始化工具会有所不同,对于Linux实例,由cloud-init工具负责完成自动初始化,而Windows实例则由Vminit工具进行自动初始化。本文将介绍Linux实例和Windows实例的初始化工具。

cloud-init工具介绍

Linux实例通过开源工具cloud-init来完成自动初始化实例。更多信息,请参见cloud-init官方文档

  • 在cloud-init中,定义了一系列的模块(Modules)来完成需要执行的任务和配置。每个模块都有名称、运行频率、配置参数这三大要素,其中运行频率表示该模块该在什么时候运行,通常有两种运行频率:once-per-instance表示仅在实例首次启动时运行;always表示实例每次启动时都会运行。更多信息,请参见Module reference

  • cloud-init通过配置文件/etc/cloud/cloud.cfg控制实例的初始化行为,例如运行哪些模块。在运行模块时,cloud-init可以从元数据服务中获取实例的实例ID、主机名等元数据信息。以Set Hostname模块为例,实例启动时,cloud-init会读取元数据的主机名信息,并将其设置为实例的主机名。

说明

阿里云所有公共镜像以及基于公共镜像创建的自定义镜像已默认安装cloud-init,通过公共镜像创建ECS实例会自动运行cloud-init,无需再手动安装。如果您是通过本地制作的自定义镜像创建ECS实例,且镜像未安装cloud-init,需要手动安装cloud-init,具体操作,请参见安装cloud-init

Vminit工具介绍

Windows实例通过Vminit初始化工具完成自动初始化,该工具本质上是通过顺序执行一系列插件来完成系统的初始化配置。其中,部分插件仅在实例首次创建并启动时执行一次,而某些插件则在每次实例启动时均会执行。在使用Windows镜像创建实例的过程中,将默认自动执行Vminit所有插件的初始化功能。

说明

2023年09月份及之后的Windows公共镜像以及基于公共镜像创建的自定义镜像已默认安装Vminit,通过公共镜像创建ECS实例会自动运行Vminit,无需再手动安装。如果您是通过本地制作的自定义镜像创建ECS实例,且镜像未安装Vminit,需要手动安装Vminit,保证运行该镜像的ECS实例能成功完成初始化配置。具体操作,请参见安装Vminit

目前,Vminit包含10个插件,具体说明见下表。

说明

下述插件列表适用于2023年09月份及其之后发布的Windows公共镜像,以及基于该公共镜像创建的自定义镜像所运行的实例。如果镜像不符合上述条件,则该镜像中的Vminit插件可能与以下列表存在差异。

插件列表

插件名称

执行频率

插件功能

说明

Plugin_Main_StartDepend

仅在实例首次启动时执行。

启动Windows操作系统的IP Helper服务、DHCP客户端和Windows时间服务(W32Time) 。

Windows镜像默认开启这些系统服务,但是您可能在自定义镜像中禁用了这些服务,该插件会开启这些服务,避免因禁用系统服务导致网络和NTP设置异常。

Plugin_Main_OpenRDP

允许通过远程桌面连接服务RDP连接实例。

Windows系统默认开启RDP服务,对于禁用RDP服务的镜像,该插件会开启RDP。

Plugin_Main_NetworkClean

初始化网络配置,系统会使用DHCP方式自动获取实例中所有网卡的IP地址和DNS服务器设置。

如果实例中的IP Helper和DHCP服务未正确开启,可能导致该插件执行失败,从而无法通过内网访问实例元数据。

Plugin_Main_ConfigDisk

将随实例创建的数据盘进行初始化,包括创建分区、分配盘符等,且分区格式默认为GPT。

  • 在实例创建过程中,如果同时添加了新的数据盘,数据盘是未初始化的。为提高您的便利,本插件会自动对数据盘进行初始化并设置为联机状态。

  • 在实例创建过程中,如果添加的是带有数据的数据盘,Vminit不会对其进行初始化。

Plugin_Main_ExtendVolume

自动检测Windows系统盘的空闲空间,并利用diskpart命令来扩展系统盘。

无。

Plugin_Main_CloudinitUserData

该插件会从阿里云的元数据中获取您配置的自定义数据,并使用系统的system账户执行自定义数据脚本。

Plugin_Main_ConfigHostname

实例每次启动时都会执行。

设置实例的主机名。在实例创建阶段,阿里云会为每个实例分配一个主机名。如果您在创建实例时指定了主机名,系统将根据您设定的主机名进行配置。否则,阿里云将自动分配一个随机的主机名。

  • 设置主机名会强制重启系统,重启系统会在该插件执行完毕后立即执行。

  • 如果实例的主机名与您配置的主机名一致,则不会重复设置主机名。

  • 如果您本身不依赖阿里云修改主机名,而是由您自定义设置实例的主机名,可以禁用该插件。例如,您在自定义镜像中增加了开机启动修改主机名的逻辑,这可能与Vminit这个插件的逻辑冲突,这种情况下,建议在创建自定义镜像时,禁用该插件。具体操作,请参见配置Vminit

Plugin_Main_ConfigWsus

该插件会从阿里云的元数据中获取WSUS地址,并配置到实例中。如果实例的WSUS地址已经配置成阿里云的WSUS地址,则不会重复配置。

该插件依赖内网访问能力。

Plugin_Main_ConfigKms

该插件会从阿里云的元数据中获取KMS地址,配置到实例后会进行KMS激活。如果实例KMS已经激活且KMS相同,则不会重复配置。

该插件依赖内网访问能力。

Plugin_Main_ConfigNtp

配置NTP时钟源,用于时间同步。该插件会从阿里云的元数据中获取NTP服务器地址,并配置到实例中。如果实例已经配置了相同的NTP地址,则不会重复配置。

  • 该插件依赖内网访问能力。

  • 该插件依赖W32Time服务。

版本发布记录

Vminit会不定期发布版本更新,以下为Vminit的版本发布信息。

Vminit版本

发布内容

发布日期

2.0.1.2

  • 清除Windows事件管理器中的报错告警。

  • Userdata的Bat脚本支持延迟变量。

2024年01月

2.0.1.0

首次发布,支持插件化可配置。

2023年09月

相关文档

您可以在创建实例时选择使用自定义数据来初始化该实例。具体操作,请参见自定义实例初始化配置

关于制作镜像时如何安装及使用初始化工具,请参见安装cloud-init安装Vminit